Custom Predicate, Transformer এবং Closure Class তৈরি

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Custom Collections এবং Advanced Functors |
137
137

Apache Commons Collections লাইব্রেরি জাভাতে ফাংশনাল প্রোগ্রামিং প্যাটার্নের ব্যবহারকে সহজ করে তোলে, যেমন Predicate, Transformer, এবং Closure। এই ক্লাসগুলি বিভিন্ন ধরনের ফিল্টারিং, রূপান্তর এবং অপারেশন করার জন্য ব্যবহৃত হয়। আপনি কাস্টম Predicate, Transformer এবং Closure তৈরি করতে পারেন আপনার নির্দিষ্ট প্রয়োজনে। নিচে আমরা কিভাবে এই ক্লাসগুলিকে কাস্টমাইজ করা যায়, তা আলোচনা করব।


1. Custom Predicate Class তৈরি করা


Predicate হল একটি boolean-valued function যা কোনও অবজেক্ট ইনপুট হিসেবে নেয় এবং একটি true বা false আউটপুট প্রদান করে। এটি সাধারণত filtering কাজের জন্য ব্যবহৃত হয়, যেমন কোন একটি কালেকশনের উপাদান ফিল্টার করা।

Custom Predicate এর বৈশিষ্ট্য:

  • এটি কোনো অবজেক্টের উপর পরীক্ষা চালিয়ে একটি বুলিয়ান মান প্রদান করে।
  • আপনি একটি কাস্টম Predicate তৈরি করতে পারেন যেটি আপনার নিজের লজিক অনুসারে কাজ করবে।

Custom Predicate উদাহরণ:

ধরা যাক, আমাদের একটি তালিকা আছে এবং আমরা চাই শুধুমাত্র ৫ অক্ষরের বেশি লম্বা স্ট্রিংগুলো বের করতে।

import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;

public class CustomPredicateExample {
    public static void main(String[] args) {
        // Create a list of strings
        List<String> list = Arrays.asList("apple", "banana", "orange", "kiwi", "grape");

        // Create a custom Predicate to filter strings greater than 5 characters
        Predicate<String> lengthPredicate = new Predicate<String>() {
            @Override
            public boolean evaluate(String input) {
                return input.length() > 5;  // Filter strings with more than 5 characters
            }
        };

        // Apply the Predicate to filter the list
        List<String> filteredList = (List<String>) CollectionUtils.select(list, lengthPredicate);

        // Print the filtered list
        System.out.println(filteredList);  // Output: [banana, orange]
    }
}

এখানে, আমরা একটি Predicate তৈরি করেছি যা String এর দৈর্ঘ্য পরীক্ষা করে এবং যেগুলি ৫ অক্ষরের বেশি, সেগুলো ফিল্টার করা হয়েছে।


2. Custom Transformer Class তৈরি করা


Transformer হল একটি ফাংশনাল অপারেশন যা একটি অবজেক্ট ইনপুট হিসেবে নেয় এবং অন্য একটি আউটপুট অবজেক্ট প্রদান করে। এটি মূলত ডেটা ট্রান্সফরমেশন বা রূপান্তর করতে ব্যবহৃত হয়।

Custom Transformer এর বৈশিষ্ট্য:

  • এটি একটি ইনপুট অবজেক্ট গ্রহণ করে এবং আউটপুট অবজেক্ট প্রদান করে।
  • আপনি একটি কাস্টম Transformer তৈরি করতে পারেন, যা আপনার নির্দিষ্ট ট্রান্সফরমেশন লজিক অনুসরণ করবে।

Custom Transformer উদাহরণ:

ধরা যাক, আমাদের একটি তালিকা আছে এবং আমরা চাই স্ট্রিংগুলির প্রত্যেকটি প্রথম অক্ষরকে বড় অক্ষরে রূপান্তর করতে।

import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.ListUtils;

import java.util.Arrays;
import java.util.List;

public class CustomTransformerExample {
    public static void main(String[] args) {
        // Create a list of strings
        List<String> list = Arrays.asList("apple", "banana", "orange");

        // Create a custom Transformer to capitalize the first letter of each string
        Transformer<String, String> transformer = new Transformer<String, String>() {
            @Override
            public String transform(String input) {
                if (input == null || input.isEmpty()) {
                    return input;
                }
                return input.substring(0, 1).toUpperCase() + input.substring(1);
            }
        };

        // Apply the transformer to the list
        List<String> transformedList = (List<String>) ListUtils.transformedList(list, transformer);

        // Print the transformed list
        System.out.println(transformedList);  // Output: [Apple, Banana, Orange]
    }
}

এখানে, আমরা একটি Transformer তৈরি করেছি যা স্ট্রিংয়ের প্রথম অক্ষর বড় করে রূপান্তর করে এবং তা একটি তালিকার উপাদানগুলিতে প্রয়োগ করেছি।


3. Custom Closure Class তৈরি করা


Closure হল একটি ফাংশনাল অপারেশন যা একটি অবজেক্ট ইনপুট হিসেবে নেয় এবং কিছু কার্যকরী কাজ সম্পাদন করে, কিন্তু এটি কোন আউটপুট প্রদান করে না। এটি সাধারণত কোনো অপারেশন বা এক্সিকিউটেবল কাজ করার জন্য ব্যবহৃত হয়, যেমন একটি ডেটা কালেকশনের উপর কাজ করা।

Custom Closure এর বৈশিষ্ট্য:

  • এটি একটি কার্যকরী অপারেশন যা একটি অবজেক্ট গ্রহণ করে এবং কোনো আউটপুট প্রদান না করে নির্দিষ্ট কাজ করে।
  • আপনি একটি কাস্টম Closure তৈরি করতে পারেন যা একটি ডেটা স্ট্রাকচারের উপাদানগুলির উপর কাজ করবে।

Custom Closure উদাহরণ:

ধরা যাক, আমাদের একটি তালিকা রয়েছে এবং আমরা চাই যে, প্রতিটি স্ট্রিংয়ের শেষে একটি বিশেষ চিহ্ন যোগ করা হোক।

import org.apache.commons.collections4.Closure;
import org.apache.commons.collections4.CollectionUtils;

import java.util.Arrays;
import java.util.List;

public class CustomClosureExample {
    public static void main(String[] args) {
        // Create a list of strings
        List<String> list = Arrays.asList("apple", "banana", "orange");

        // Create a custom Closure to append an exclamation mark to each string
        Closure<String> closure = new Closure<String>() {
            @Override
            public void execute(String input) {
                // Append a special character to each string
                System.out.println(input + "!");
            }
        };

        // Apply the closure to the list
        CollectionUtils.forEach(list, closure);  // Output: apple! banana! orange!
    }
}

এখানে, আমরা একটি Closure তৈরি করেছি যা প্রতিটি স্ট্রিংয়ের শেষে ! চিহ্ন যোগ করে এবং forEach পদ্ধতি দিয়ে সেটি তালিকার প্রতিটি উপাদানে প্রয়োগ করা হয়েছে।


Custom Predicate, Transformer, এবং Closure এর মধ্যে পার্থক্য

ফিচারPredicateTransformerClosure
কাজএকটি অবজেক্টের উপর পরীক্ষণ চালিয়ে boolean রিটার্ন করাএকটি অবজেক্ট রূপান্তর করে নতুন আউটপুট তৈরি করাএকটি অবজেক্টের উপর কার্যকরী কাজ করা, কোন আউটপুট নেই
রিটার্ন টাইপbooleanAny (যেকোনো ধরনের অবজেক্ট)void (কোনো রিটার্ন নেই)
ব্যবহারফিল্টারিং বা টেস্টিংডেটা ট্রান্সফরমেশন বা রূপান্তরঅপারেশন সম্পাদন বা প্রক্রিয়া
কোড উদাহরণboolean evaluate(T input)R transform(T input)void execute(T input)

সারাংশ


Apache Commons Collections লাইব্রেরি ব্যবহার করে আপনি Predicate, Transformer, এবং Closure ক্লাসগুলো কাস্টমাইজ করে বিশেষ ধরনের ফাংশনাল অপারেশন তৈরি করতে পারেন। Predicate ব্যবহার করে আপনি ডেটার উপর পরীক্ষা চালিয়ে ফলাফল ফিল্টার করতে পারেন, Transformer ব্যবহার করে আপনি ডেটা রূপান্তর করতে পারেন, এবং Closure ব্যবহার করে আপনি কোনো কার্যকরী অপারেশন সম্পাদন করতে পারেন। এই ক্লাসগুলিকে কাস্টমাইজ করার মাধ্যমে আপনি আরও কার্যকরী, পুনঃব্যবহারযোগ্য কোড তৈরি করতে পারবেন যা আপনার প্রোজেক্টের ডেটা ম্যানিপুলেশনকে আরও সহজ এবং কার্যকর করবে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion